package com.skivingcloud.admin.sys.service;

import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import com.skivingcloud.admin.sys.entity.SysOrg;
import com.skivingcloud.admin.sys.entity.SysStation;
import com.skivingcloud.common.utils.PageParameter;

import java.io.Serializable;
import java.util.List;

/**
 *  服务层。
 *
 * @author skivingcloud
 * @since 2023-08-28
 */
public interface SysStationService extends IService<SysStation> {
    
    /**
     * 删除岗位信息，关联的用户及资源权限一并删除
     * @param id 岗位id
     * @return 结果
     */
    Boolean deleteById(Serializable id);
    
    /**
     * 分页查询
     * @param parameter 参数
     * @return 岗位信息
     */
    Page<SysStation> queryByPage(PageParameter<SysStation> parameter);
    
    /**
     * 新增岗位，包含资源权限
     * @param sysStation 岗位信息
     * @return 执行结果
     */
    Boolean saveHasRes(SysStation sysStation);
    
    /**
     * 修改岗位，包含资源权限
     * @param sysStation 岗位信息
     * @return 执行结果
     */
    Boolean updateByIdHasRes(SysStation sysStation);
    
    /**
     * 批量删除岗位信息
     * @param ids 岗位ID
     */
    void deleteBatch(String[] ids);
    
    /**
     * 仅设置岗位资源权限
     * @param id 岗位ID
     * @param resId 资源ID
     */
    void saveStationRes(String id, String[] resId);
    
    /**
     * 根据租户获取岗位树
     * @param tenantId 租户id
     * @return 岗位树
     */
    List<SysOrg> treeByTenantId(String tenantId);
    
    /**
     * 根据用户ID获取岗位集合
     * @param userId 用户ID
     * @return 岗位信息
     */
    List<SysStation> getStationListByUserId(String userId);
}
